import { identityMap, identityQuestionCategoryName } from "@/static/constants/questionnaire-constant";
import request, { reqPost } from "./request";
import { reqGet } from "./request";

/**
 * 编辑问卷，通过传入参数的不同，实现创建问卷、编辑已有问卷、删除问卷、恢复问卷
 * @param questionnaire 问卷
 * @param isDelete 是否删除问卷，默认为false
 */
export function reqEditQuestionnaire(questionnaire: Questionnaire, isDelete: boolean = false) {
  return request.post(
    "/questionnaire/editQuestion",
    {
      "question_id": questionnaire.id,
      "title": questionnaire.title,
      "content": JSON.stringify(questionnaire),
      "wedding_date": questionnaire.deadline,
      "is_delete": isDelete ? '1' : '0'
    }
  );
}

/**
 * 获取我受邀填写的、或已提交的问卷，用于分享问卷填写
 * @param id 问卷id
 * @returns 问卷
 */
export function reqGetQuestionnaire(id: string) {
  return request.get(
    "/questionnaire/MyQuestionnaire",
    {
      "target_id": id,
    }
  );
}

/**
 * 获取我收到的问卷（单张）
 * @param id 问卷id
 * @returns 问卷
 */
export function reqGetReceivedQuestionnaire(id: string) {
  return request.get(
    "/questionnaire/getAnswer",
    {
      "answer_id": id,
    }
  );
}

/**
 * 获取我管理的问卷（包括创建的、已删除的、已过期的、问卷模板）
 * @param id 问卷id
 */
export function reqGetManagedQuestionnaire(id: string) {
  return request.get(
    "/questionnaire/getQuestion",
    {
      "question_id": id,
    }
  );
}

/**
 * 提交回答的问卷，以及后续对已提交问卷进行编辑
 * @param questionnaire 已回答的问卷
 */
export function reqSubmitQuestionnaire(questionnaire: Questionnaire) {
  console.log('reqSubmitQuestionnaire', questionnaire)
  // 该问卷的身份名称（中文）
  const identityZh = questionnaire.categoryQuestionList?.find((item) => {
    return item.questionCategory === identityQuestionCategoryName
  })?.questionList[0].options?.find((option) => {
    return option.checked
  })?.option || '新郎'
  // 从identityMap中找到字符串对应的单词
  const identity = identityMap.find((item) => {
    return item.zh === identityZh
  })?.en
  console.log('identity', identity)

  return request.post(
    "/questionnaire/saveAnswer",
    {
      target_id: questionnaire.id,
      content_json: JSON.stringify(questionnaire),
      answer_id: questionnaire.answerId,
      identity
    }
  );
}

/**
 * 删除收到的问卷
 * @param id 收到的问卷的id
 */
export function reqDeleteReceivedQuestionnaire(id: string) {
  return reqPost('/questionnaire/deleteAnswer', { answerId: id })
}

/**
 * 编辑收到的问卷
 * @param questionnaire 问卷
 */
export function reqEditReceivedQuestionnaire(questionnaire: Questionnaire) {
  console.log('reqEditReceivedQuestionnaire', questionnaire)
  return request.post(
    "/questionnaire/editAnswer",
    {
      "answer_id": questionnaire.id,
      "content_json": JSON.stringify(questionnaire),
    }
  );
}

/**
 * 获取目标身份用户回答的问卷
 * @param questionnaireId 问卷id
 * @param targetIdentity 目标身份
 */
export function reqGetTargetIdentityAnswer(questionnaireId: string, targetIdentity: string) {
  return request.get(
    "/questionnaire/getTargetIdentityAnswer",
    {
      "questionnaireId": questionnaireId,
      "targetIdentity": targetIdentity
    }
  );
}

/**
 * 获取问卷回答情况
 * @param questionnaireId 问卷id
 */
export function reqGetQuestionnaireAnswerStatus(questionnaireId: string) {
  return reqGet(
    "/questionnaire/getAnswerStatus",
    {
      "questionnaireId": questionnaireId,
    }
  );
}
